/**
 */
package org.cmoine.perspectiveshare.model.util;

import org.cmoine.perspectiveshare.model.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see org.cmoine.perspectiveshare.model.PerspectivesPackage
 * @generated
 */
public class PerspectivesSwitch<T> extends Switch<T> {
    /**
     * The cached model package
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    protected static PerspectivesPackage modelPackage;

    /**
     * Creates an instance of the switch.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public PerspectivesSwitch() {
        if (modelPackage == null) {
            modelPackage = PerspectivesPackage.eINSTANCE;
        }
    }

    /**
     * Checks whether this is a switch for the given package.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @parameter ePackage the package in question.
     * @return whether this is a switch for the given package.
     * @generated
     */
    @Override
    protected boolean isSwitchFor(EPackage ePackage) {
        return ePackage == modelPackage;
    }

    /**
     * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @return the first non-null result returned by a <code>caseXXX</code> call.
     * @generated
     */
    @Override
    protected T doSwitch(int classifierID, EObject theEObject) {
        switch (classifierID) {
            case PerspectivesPackage.ALWAYS_OFF_ACTION_SET_TYPE: {
                AlwaysOffActionSetType alwaysOffActionSetType = (AlwaysOffActionSetType)theEObject;
                T result = caseAlwaysOffActionSetType(alwaysOffActionSetType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.ALWAYS_ON_ACTION_SET_TYPE: {
                AlwaysOnActionSetType alwaysOnActionSetType = (AlwaysOnActionSetType)theEObject;
                T result = caseAlwaysOnActionSetType(alwaysOnActionSetType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.DESCRIPTOR_TYPE: {
                DescriptorType descriptorType = (DescriptorType)theEObject;
                T result = caseDescriptorType(descriptorType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.DOCUMENT_ROOT: {
                DocumentRoot documentRoot = (DocumentRoot)theEObject;
                T result = caseDocumentRoot(documentRoot);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.FAST_VIEWS_TYPE: {
                FastViewsType fastViewsType = (FastViewsType)theEObject;
                T result = caseFastViewsType(fastViewsType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.FOLDER_TYPE: {
                FolderType folderType = (FolderType)theEObject;
                T result = caseFolderType(folderType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.HIDE_TOOLBAR_ITEM_ID_TYPE: {
                HideToolbarItemIdType hideToolbarItemIdType = (HideToolbarItemIdType)theEObject;
                T result = caseHideToolbarItemIdType(hideToolbarItemIdType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.INFO_TYPE: {
                InfoType infoType = (InfoType)theEObject;
                T result = caseInfoType(infoType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.LAYOUT_TYPE: {
                LayoutType layoutType = (LayoutType)theEObject;
                T result = caseLayoutType(layoutType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.MAIN_WINDOW_TYPE: {
                MainWindowType mainWindowType = (MainWindowType)theEObject;
                T result = caseMainWindowType(mainWindowType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.NEW_WIZARD_ACTION_TYPE: {
                NewWizardActionType newWizardActionType = (NewWizardActionType)theEObject;
                T result = caseNewWizardActionType(newWizardActionType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.PAGE_TYPE: {
                PageType pageType = (PageType)theEObject;
                T result = casePageType(pageType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.PART_TYPE: {
                PartType partType = (PartType)theEObject;
                T result = casePartType(partType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.PERSPECTIVE_ACTION_TYPE: {
                PerspectiveActionType perspectiveActionType = (PerspectiveActionType)theEObject;
                T result = casePerspectiveActionType(perspectiveActionType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.PERSPECTIVE_TYPE: {
                PerspectiveType perspectiveType = (PerspectiveType)theEObject;
                T result = casePerspectiveType(perspectiveType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.PRESENTATION_TYPE: {
                PresentationType presentationType = (PresentationType)theEObject;
                T result = casePresentationType(presentationType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.SHOW_IN_TIME_TYPE: {
                ShowInTimeType showInTimeType = (ShowInTimeType)theEObject;
                T result = caseShowInTimeType(showInTimeType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.SHOW_VIEW_ACTION_TYPE: {
                ShowViewActionType showViewActionType = (ShowViewActionType)theEObject;
                T result = caseShowViewActionType(showViewActionType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.VIEW_TYPE: {
                ViewType viewType = (ViewType)theEObject;
                T result = caseViewType(viewType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.VIEW_TYPE1: {
                ViewType1 viewType1 = (ViewType1)theEObject;
                T result = caseViewType1(viewType1);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            case PerspectivesPackage.WINDOW_TYPE: {
                WindowType windowType = (WindowType)theEObject;
                T result = caseWindowType(windowType);
                if (result == null) result = defaultCase(theEObject);
                return result;
            }
            default: return defaultCase(theEObject);
        }
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Always Off Action Set Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Always Off Action Set Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseAlwaysOffActionSetType(AlwaysOffActionSetType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Always On Action Set Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Always On Action Set Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseAlwaysOnActionSetType(AlwaysOnActionSetType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Descriptor Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Descriptor Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseDescriptorType(DescriptorType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Document Root</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseDocumentRoot(DocumentRoot object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Fast Views Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Fast Views Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseFastViewsType(FastViewsType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Folder Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Folder Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseFolderType(FolderType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Hide Toolbar Item Id Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Hide Toolbar Item Id Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseHideToolbarItemIdType(HideToolbarItemIdType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Info Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Info Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseInfoType(InfoType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Layout Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Layout Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseLayoutType(LayoutType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Main Window Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Main Window Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseMainWindowType(MainWindowType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>New Wizard Action Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>New Wizard Action Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseNewWizardActionType(NewWizardActionType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Page Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Page Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T casePageType(PageType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Part Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Part Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T casePartType(PartType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Perspective Action Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Perspective Action Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T casePerspectiveActionType(PerspectiveActionType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Perspective Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Perspective Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T casePerspectiveType(PerspectiveType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Presentation Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Presentation Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T casePresentationType(PresentationType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Show In Time Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Show In Time Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseShowInTimeType(ShowInTimeType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Show View Action Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Show View Action Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseShowViewActionType(ShowViewActionType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>View Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>View Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseViewType(ViewType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>View Type1</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>View Type1</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseViewType1(ViewType1 object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>Window Type</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>Window Type</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
     * @generated
     */
    public T caseWindowType(WindowType object) {
        return null;
    }

    /**
     * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
     * <!-- begin-user-doc -->
     * This implementation returns null;
     * returning a non-null result will terminate the switch, but this is the last case anyway.
     * <!-- end-user-doc -->
     * @param object the target of the switch.
     * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
     * @see #doSwitch(org.eclipse.emf.ecore.EObject)
     * @generated
     */
    @Override
    public T defaultCase(EObject object) {
        return null;
    }

} //PerspectivesSwitch
